var express = require("express");
var app = express();
// 每个中间件可以从 app 实例接收三个参数, request, response, next 回调函数(代表下一个中间件)
// 每个中间件都可以对 HTTP 请求 (request 对象)进行加工, 并且决定是否调用 next 方法, 将 request 对象再传给下一个中间件
app.use(function(request, response, next) {
  console.log("In comes a " + request.method + " to " + request.url);
  next();
});
app.use(function(request, response) {
  response.writeHead(200, { "Content-Type": "text/plain" });
  response.end("Hello world!\n");
});
app.listen(1337);
// 上面代码使用 app.use 注册了两个中间件; 收到 HTTP 请求后, 先调用第一个中间件, 在控制台输出一行信息
// 然后通过 next 方法将执行权传给第二个中间件, 输出 HTTP 回应
// 由于第二个中间件没有调用 next 方法, 所以 request 对象就不再向后传递了
